package it.unicam.ids.pvm.data;

import it.unicam.ids.pvm.data.mysql.MySQLDAOFactory;

/**
 * La classe rappresenta un'astrazione per la gestione delle 
 * interfacce di accesso alla sorgente dati.
 * @author Luca Iachini, Valerio Iachini, Alessandro Cardenà
 *
 */
public abstract class DAOFactory {
	
	/**
	 * Il metodo restituisce l'interfaccia CasellaDAO.
	 * @return casella CasellaDAO.
	 */

	public abstract CasellaDAO getCasellaDAO();
	
	/**
	 * Il metodo restituisce l'interfaccia CassaDAO.
	 * @return cassa CassaDAO.
	 */

	public abstract CassaDAO getCassaDAO();
	
	/**
	 * Il metodo restituisce l'interfaccia AnnuncioDAO.
	 * @return annuncio AnnuncioDAO.
	 */

	public abstract AnnuncioDAO getAnnuncioDAO();
	
	/**
	 * Il metodo restituisce l'interfaccia ProdottoDAO.
	 * @return prodotto ProdottoDAO.
	 */
	
	public abstract ProdottoDAO getProdottoDAO();
	
	/**
	 * Il metodo restituisce l'implementazione 
	 * all'interfaccia DAOFactory.
	 * @return factory DAOFactory.
	 */

	public static DAOFactory getDAOFactory() {
		DataSourceType t = Configurazione.getInstance().getDataSourceType();
		switch (t) {
		case MySQL:
			return new MySQLDAOFactory();
		default:
			return null;
		}
	}
}